The Function Passing Model: Types, Proofs, and Semantics
نویسندگان
چکیده
We formalize our programming model in the context of a typed lambda calculus with records. Figure 1 shows the abstract syntax of our core language. Besides standard terms, the language includes terms related to (a) spores, (b) silos, and (c) futures. The spore term creates a new spore. It contains a list of variable definitions, the spore header, and a closure which may only refer to its parameter and variables in the spore header. The spawn term creates a new host capable of hosting silos. The populate term initializes a new silo on a given host with a given data value. The map, flatMap, and persist terms create lineages of silo transformations represented as silo references. The send term forces the materialization of the silo corresponding to its argument silo reference; send returns a future which is asynchronously completed with the silo’s value. The await term waits for the completion of its argument future and returns the future’s value. Locations ι are used to refer to futures and hosts, both of which can be created dynamically using the above terms. Values in our language are as expected: besides abstractions and record values they include spore values, locations, and silo references. Locations and silo references are not part of the “surface syntax” of our language; they are only introduced by evaluation (see Section 1.1). Silo reference values are values of a simple datatype with constructors Mat, Mapped, FMapped, and Persist. The constructors include all information required for materializing a silo with the result of applying the described transformations. Therefore, a silo reference value is also called the lineage of its corresponding silo. We defer a detailed explanation of the transformations described by a lineage to the following Section 1.1. In addition to standard function and record types, the language has types for spores, hosts, silo references, and futures. A spore type T ⇒ T ′ { type C = T } includes the types T of the variables declared in the header of the spore.
منابع مشابه
Time Consumption Modeling of Planning Vertical Profile of High-Speed Railways
Recent years, High-Speed railway has become a hot topic of railway development. Many countries in the world have built relatively complete high-speed railway networks.Each of them enjoys its own efficient traffic organization system and method, as well as a theory of station distribution layout. Based on the railway traffic conditions in China, the designer is adopting special procedure for bu...
متن کاملProofs for “Integrating Dependent and Linear Types”
The basic approach of this paper is to build a realizability model of dependent LNL in the style of Harper [4]. Essentially, we give an untyped operational semantics for the language, and then construct a PER for the syntactic types, and a function mapping each semantic type to a PER giving the equality relation for that type. For linear types, we give a map from semantic types to a map from mo...
متن کاملOn inter-deriving small-step and big-step semantics: A case study for storeless call-by-need evaluation
Starting from the standard call-by-need reduction for the λ-calculus that is common to Ariola, Felleisen, Maraist, Odersky, and Wadler, we inter-derive a series of hygienic semantic artifacts: a reduction-free storeless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for callby-need evaluation. Furthermore we observe that...
متن کاملDeXteR- An Extensible Framework for Declarative Parameter Passing in Distributed Object Systems
In modern distributed object systems, reference parameters are passed to a remote method based on their runtime type. We argue that such type-based parameter passing is limiting with respect to expressiveness, readability, and maintainability, and that parameter passing semantics should be decoupled from parameter types. We present declarative parameter passing, an approach that fully decouples...
متن کاملNon uniform (hyper/multi)coherence spaces
In (hyper)coherence semantics, proofs/terms are cliques in (hyper)graphs. Intuitively, vertices represent results of computations and the edge relation witnesses the ability of being assembled into a same piece of data or a same (strongly) stable function, at arrow types. In (hyper)coherence semantics, the argument of a (strongly) stable functional is always a (strongly) stable function. As a c...
متن کاملDefunctionalized Interpreters for Call-by-Need Evaluation
Starting from the standard call-by-need reduction for the λ-calculus that is common to Ariola, Felleisen, Maraist, Odersky, and Wadler, we inter-derive a series of hygienic semantic artifacts: a reductionfree stateless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation. Furthermore we observe that...
متن کامل